iT邦幫忙

2021 iThome 鐵人賽

DAY 7
0
DevOps

玩耍開源k8s30天系列 第 7

day7 : logging集中(上)

  • 分享至 

  • xImage
  •  

昨天讓kubernetes上的各項監控數據順利的統一到grafana上,今天就來把服務的log統一集中吧。

關於k8s要如何搜集log主要方法有兩種,一是透過sidecar的方式將pod log轉發出來,二是利用container會在host上寫log的原理用daemonset的pod去搜集log;我今天會用daemonset的做法介紹vector這項專案,並透過vector將log送到loki並在grafana上查詢。

由於這個架構物件比較多一些,畫了一張架構圖來表示彼此之間的關係
https://ithelp.ithome.com.tw/upload/images/20210907/20139661kQiVhhfLQL.png
架構說明
每個node上有一個daemonset的vector agent搜集metric和log,metric會送到外部的屬於這座cluster的vector進行處理,再由grafana搜集呈現出來;log則是送到屬於這座cluster的kafka做緩送及持久化儲存,再由一座統一管理的vector收下來進行parser及transform的變化依據需求轉送到外部儲存,集中的log會送一份到loki上並存到minio儲存,另外透過grafana指定loki為datasource,這樣就可以藉由grafana介面統一查詢所有cluster的log了。

那麼就先從最基本的daemonset vector agent開始配置,簡易的做法是透過helm安裝

添加helm的repo庫

helm repo add timberio https://packages.timber.io/helm/latest

編輯vector要使用的value

cat <<-'VALUES' > values.yaml
# The Vector Kubernetes integration automatically defines a
# kubernetes_logs source that is made available to you.
# You do not need to define a log source.
sinks:
  # Adjust as necessary. By default we use the console sink
  # to print all data. This allows you to see Vector working.
  # /docs/reference/sinks/
  stdout:
    type: console
    inputs: ["kubernetes_logs"]
    target: "stdout"
    encoding: "json"
VALUES

安裝

helm install vector timberio/vector-agent \
  --namespace vector \
  --create-namespace \
  --values values.yaml

安裝完成後可以發現多了一個叫vector的namespace,並且有一個daemonset在每個node上部署了vector agent,另外也可以觀察到vector的namespace內有一個configmap,vector agent就會依據這個configmap的內容去取得他的資料來源(metric、log);在完成ds的配置後,因為要讓外部的vector能夠取得metric資訊,可以將daemonset設定hostnetwork為true,這樣就會在每個node上暴露9090port給外部的vector存取囉。


上一篇
day6 : metric應用
下一篇
day8 : logging集中(中)
系列文
玩耍開源k8s30天31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言